package jp.co.succ.sikenapp;

import java.util.ArrayList;

import jp.co.succ.sikencommon.ExcelDataBean;
import jp.co.succ.sikencommon.IActivity;
import jp.co.succ.sikencommon.SendData;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

/**
 *
 * @author 小口 暁史
 *
 */
public class SikenQuestionActivity extends Activity
implements DialogInterface.OnClickListener {

    /** 問題番号. */
    private int iQuestionNo = 0;
    /** エクセルデータBeanリスト. */
    private ArrayList<ExcelDataBean> oExcelDataBeanList =
            new ArrayList<ExcelDataBean>();

    /**
     * Called when the activity is first created.
     * @param savedInstanceState インスタンスステータス
     */
    @Override
    public final void onCreate(final Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.questionlayout);

        // インテントの用意
        Intent oIntent = getIntent();

        // インテントから遷移元の引数を取得
        SendData oSendData =
                (SendData) oIntent.getSerializableExtra(IActivity.SENDDATA);

        // 問題番号の取得
        this.iQuestionNo = oSendData.getQuestionNo();

        // エクセルデータの取得
        this.oExcelDataBeanList =
                new ArrayList<ExcelDataBean>(oSendData.getExcelDataBeanList());

        // 問題番号が0未満もしくは問題数を超えていたら処理を終了
        if (this.iQuestionNo < 0 || this.iQuestionNo >= this.oExcelDataBeanList.size()) {
            finish();
        } else {

            // 該当する問題番号のエクセルデータの取得
            ExcelDataBean oExcelDataBean = this.oExcelDataBeanList
                    .get(this.iQuestionNo);

            // レイアウトの取得
            // 問題文
            TextView oQuestion = (TextView) findViewById(R.id.question);
            // 選択肢１
            Button oSelect1 = (Button) findViewById(R.id.SELECT1);
            // 選択肢２
            Button oSelect2 = (Button) findViewById(R.id.SELECT2);
            // 選択肢３
            Button oSelect3 = (Button) findViewById(R.id.SELECT3);
            // 選択肢４
            Button oSelect4 = (Button) findViewById(R.id.SELECT4);

            // 表示内容の設定
            // 問題文
            oQuestion.setText(oExcelDataBean.getQuestion());
            // 選択肢１
            oSelect1.setText(oExcelDataBean.getSelect1());
            // 選択肢２
            oSelect2.setText(oExcelDataBean.getSelect2());
            // 選択肢３
            oSelect3.setText(oExcelDataBean.getSelect3());
            // 選択肢４
            oSelect4.setText(oExcelDataBean.getSelect4());
        }
    }

    /**
     * 選択肢ボタン押下時の処理.
     * @param pv View
     */
    public final void toAnser(final View pv) {
        // 正解か不正解か
        String sResult = "";

        // 選択されたボタンのＩＤ
        int iSelectId = pv.getId();

        // 選択されたボタンの番号
        int iSelectNo = 0;

        // 押下されたボタンの番号を取得
        if (iSelectId == R.id.SELECT1) {
            iSelectNo = IActivity.SELECTNO1;
        } else if (iSelectId == R.id.SELECT2) {
            iSelectNo = IActivity.SELECTNO2;
        } else if (iSelectId == R.id.SELECT3) {
            iSelectNo = IActivity.SELECTNO3;
        } else if (iSelectId == R.id.SELECT4) {
            iSelectNo = IActivity.SELECTNO4;
        }

        // エクセルデータBean
        ExcelDataBean oExcelDataBean =
                this.oExcelDataBeanList.get(this.iQuestionNo);

        // 押下されたボタンが正解かチェック
        if (iSelectNo == oExcelDataBean.getAnser()) {
            sResult = IActivity.RIGHT;
        } else {
            sResult = IActivity.WRONG;
        }

        // 正解・不正解を表示
        AlertDialog.Builder oDlg = new AlertDialog.Builder(this);
        oDlg.setTitle(sResult);
//        oDlg.setMessage(IActivity.PREFIX + oExcelDataBean.getAnser()
//                + IActivity.SUFFIX);
//        oDlg.setCancelable(false);
//        oDlg.setPositiveButton(IActivity.NEXT, this);
        oDlg.setPositiveButton(IActivity.CLOSE, null);
        oDlg.show();
    }

    /**
     * メモボタン押下時の処理.
     * @param pv View
     */
    public final void showMemo(final View pv) {
        // エクセルデータBean
        ExcelDataBean oExcelDataBean =
                this.oExcelDataBeanList.get(this.iQuestionNo);
        // メモを表示
        AlertDialog.Builder oDlg = new AlertDialog.Builder(this);
        oDlg.setTitle(IActivity.MEMO);
        oDlg.setMessage(oExcelDataBean.getMemo());
        oDlg.setPositiveButton(IActivity.CLOSE, null);
        oDlg.show();    	
    }

    /**
     * 次の問題ボタン押下時の処理.
     * @param pv View
     */
    public final void nextQ(final View pv) {
        // 画面遷移用のインテント
        Intent oIntent = new Intent(this, SikenQuestionActivity.class);

        // インテントに引数を設定
        oIntent.putExtra(IActivity.SENDDATA,
                new SendData(oExcelDataBeanList, this.iQuestionNo + 1));

        // 画面遷移
        startActivity(oIntent);
        finish();
    }

    /**
     * 前の問題ボタン押下時の処理.
     * @param pv View
     */
    public final void prevQ(final View pv) {
        // 画面遷移用のインテント
        Intent oIntent = new Intent(this, SikenQuestionActivity.class);

        // インテントに引数を設定
        oIntent.putExtra(IActivity.SENDDATA,
                new SendData(oExcelDataBeanList, this.iQuestionNo - 1));

        // 画面遷移
        startActivity(oIntent);
        finish();
    }
    
    /**
     * ダイアログのボタンクリック時のリスナー.
     * @param arg0 dialog
     * @param arg1 which
     */
    @Override
    public final void onClick(final DialogInterface arg0, final int arg1) {

        // 画面遷移用のインテント
        Intent oIntent = new Intent(this, SikenQuestionActivity.class);

        // インテントに引数を設定
        oIntent.putExtra(IActivity.SENDDATA,
                new SendData(oExcelDataBeanList, this.iQuestionNo + 1));

        // 画面遷移
        startActivity(oIntent);

        finish();
    }
}
